package org.example.controller;

import org.example.common.JsonCode;
import org.example.entity.Student;
import org.example.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.List;



//@Controller //@Controller：用于返回视图名称(如果没有视图，返回404)，需要配合@ResponseBody返回数据
//@ResponseBody

/*

    老师，我添加操作，填不进数据

    添加操作，前提@PostMapping

    情况1：没有报异常 -- service有没有调用mapper

    情况2：报异常
       （1）看看请求有没有到达controller指定方法
       （2）看看数据有没有成功接收到
             不加@RequestBody  apifox传递数据方式  点击body-->点击form data
             @RequestBody  apifox传递数据方式 点击body--> json



    老师，我查不到数据？
        看看id有没有接收到



 */

@RestController
@RequestMapping("/student123")
public class StudentController {

    @Autowired
    StudentService studentService;


    /*
        约定：

        添加/修改/删除操作 后
        需要为前端提供的信息有：
            code 200 表示成功
            msg 表示响应消息

        查询操作 后
         需要为前端提供的信息有：
            code 200 表示成功
            data 具体查询数据

     */

    /*
        浏览器：?id=A0001&name=zs&age=23
        形参接收方式1：add(String id,String name,String age) -- 可读性强
        形参接收方式2：add(Student s) 底层s.setId s.setName s.setAge -- 方便 -- 一般情况用这种比较多
        形参接收方式3：add(@RequestBody Student s) @RequestBody用来接收json数据
     */
    //添加 修改 删除 post请求
    @PostMapping("/add")
    //public String add(String id,String name,Integer age){
    //public String add(Student s){
    public JsonCode add(@RequestBody Student s){

        //Student s = new Student(id,name,age);
        studentService.insert(s);
        //return "success";
        return JsonCode.getJson();

        /*JsonCode jc = new JsonCode();
        jc.setCode(200);
        jc.setMsg("success");

        return jc;
        return code msg*/

    }






    @GetMapping("/index")
    public String index(){
        System.out.println(" --------------------------- ");
        return "abc";
    }

    @GetMapping("/getById")
    public Student getById(String id){

        Student s = studentService.getById(id);
        return s;
    }

    //查询 get请求
    @GetMapping("/getAll")
    public List<Student> getAll(){
        System.out.println(123123);
        List<Student> sList = studentService.getAll();
        return sList;
    }


    @PostMapping("/update")
    public JsonCode update(Student s){
        studentService.update(s);
        return JsonCode.getJson();
    }

    @PostMapping("/delete")
    public JsonCode delete(String id){
        studentService.delete(id);
        return JsonCode.getJson();
    }


    /*

        只用@Controller，需要return 一个视图，而不是数据

     */


}


















